//! Windows Event Log 集成测试示例
//!
//! 运行方式（需要管理员权限）:
//! ```
//! cargo run --example syslog_test
//! ```
//!
//! 验证方式:
//! 1. 打开 Windows 事件查看器 (eventvwr.msc)
//! 2. 导航到 Windows 日志 -> 应用程序
//! 3. 查找来源为 "log4r-syslog-test" 的事件

#[cfg(target_os = "windows")]
fn main() {
    use log4r::appender::syslog::get_syslog_appender;
    use log4r::{Level, LogEvent};

    println!("=== Windows Event Log 集成测试 ===\n");

    // 获取系统日志 Appender
    let app_name = "log4r-syslog-test";
    println!("1. 获取系统日志 Appender (app_name: {})", app_name);

    match get_syslog_appender(app_name) {
        Some(appender) => {
            println!("   ✓ 成功获取 Appender: {}", appender.name());

            // 创建 FATAL 级别日志事件
            println!("\n2. 创建 FATAL 级别日志事件");
            let event = LogEvent::new(
                Level::Fatal,
                "log4r::syslog::test",
                "这是一条测试 FATAL 日志消息 - Windows Event Log 集成测试",
            );
            println!("   事件级别: {:?}", event.level);
            println!("   事件目标: {}", event.target);
            println!("   事件消息: {}", event.message);
            println!("   写入系统日志: {}", event.write_to_syslog);

            // 写入系统日志
            println!("\n3. 写入 Windows Event Log");
            match appender.write_syslog(&event) {
                Ok(()) => {
                    println!("   ✓ 写入成功！");
                    println!("\n=== 验证步骤 ===");
                    println!("1. 打开 Windows 事件查看器 (Win+R -> eventvwr.msc)");
                    println!("2. 导航到: Windows 日志 -> 应用程序");
                    println!("3. 查找来源为 '{}' 的事件", app_name);
                    println!("4. 事件级别应为 '错误'");
                    println!("5. 事件消息应包含测试内容");
                }
                Err(e) => {
                    println!("   ✗ 写入失败: {}", e);
                    println!("\n可能的原因:");
                    println!("- 需要管理员权限运行");
                    println!("- Windows Event Log 服务未运行");
                }
            }
        }
        None => {
            println!("   ✗ 当前平台不支持系统日志");
        }
    }

    println!("\n=== 测试完成 ===");
}

#[cfg(not(target_os = "windows"))]
fn main() {
    println!("此示例仅在 Windows 平台上运行");
    println!("当前平台不支持 Windows Event Log");
}
